package com.enzoism.springboot.fastjson.a04transfer.threat1.pack3;

import com.enzoism.springboot.fastjson.a04transfer.threat1.pack1.InterfaceA;
import com.enzoism.springboot.fastjson.a04transfer.threat1.pack2.InterfaceAImplOuter;

/**
 * 在第一个包中创建一个至少有一个方法的接口。然后在第二个包内创建一个类，
 * 在这其中增加一个protected的内部类以实现那个接口。在第三个包中，继承这个类，
 * 并在一个方法中返回该protected内部类的对象，在返回的时候向上转型为第一个包中的接口的类型
 */
public class InterfaceAImplOuterSon extends InterfaceAImplOuter {
    protected InterfaceA interfaceAImpl(){
        InterfaceAImplOuter interfaceAImplOuter = new InterfaceAImplOuter();
        // 因为是不同的包，所以不能使用protected修饰，要改为public
        InterfaceA interfaceA =  interfaceAImplOuter.new InterfaceAImpl();
        interfaceA.printA();
        return interfaceA;
    }
    // 测试使用
    public static void main(String[] args) {
        new InterfaceAImplOuterSon().interfaceAImpl();
    }
}
